package com.weixin.api;


import com.weixin.api.request.WxMenuRequest;
import com.weixin.config.WxConfig;
import com.weixin.core.TokenFactory;
import com.weixin.core.WxActuator;
import com.weixin.interfaces.WeixinCallback;
import com.weixin.pojo.menu.Menus;
import com.weixin.utils.WxJson;

/**
 * 类描述：微信自定义菜单<br>
 * 创建人：邓强   <br>
 * 创建时间：2017年10月30日 下午4:41:25    <br> 
 * 修改人：  <br>
 * 修改时间：2017年10月30日 下午4:41:25   <br>  
 * 修改备注：     <br>
 * @version   V1.0
 */
public class WxMenu {
	/**
	 * 添加菜单<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:41:36    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:41:36   <br>  
	 * 修改备注：     <br> 
	 * @param menus
	 * @return
	 */
	public static String addMenu(Menus menus){
		WxConfig wxConfig = TokenFactory.getDefaultWxConfigs();
		return addMenu(wxConfig, menus);
	}
	
	/**
	 * 添加菜单<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:41:45    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:41:45   <br>  
	 * 修改备注：     <br> 
	 * @param wxConfig
	 * @param menus
	 * @return
	 */
	public static String addMenu(WxConfig wxConfig,final Menus menus){
		final String body = WxJson.toJson(menus);
		
		String resStr = WxActuator.execute(wxConfig, new WeixinCallback() {
			@Override
			public String callback(WxConfig wxConfig) {
				return WxMenuRequest.addMenu(wxConfig,body);
			}
		});

		return resStr;
	}
	
	/**
	 * 获取菜单<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:50:37    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:50:37   <br>  
	 * 修改备注：     <br> 
	 * @return
	 */
	public static String getToMenu(){
		WxConfig wxConfig = TokenFactory.getDefaultWxConfigs();
		return getToMenu(wxConfig);
	}
	
	/**
	 * 获取菜单<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:50:53    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:50:53   <br>  
	 * 修改备注：     <br> 
	 * @param wxConfig
	 * @return
	 */
	public static String getToMenu(WxConfig wxConfig){
		String resStr = WxActuator.execute(wxConfig, new WeixinCallback() {
			@Override
			public String callback(WxConfig wxConfig) {
				return WxMenuRequest.getToMenu(wxConfig);
			}
		});

		return resStr;
	}
	
	/**
	 * 删除菜单<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:51:03    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:51:03   <br>  
	 * 修改备注：     <br> 
	 * @param token
	 */
	public static void delete(String token){
		WxConfig wxConfig = TokenFactory.getDefaultWxConfigs();
		delete(wxConfig);
	}
	
	/**
	 * 删除菜单<br>
	 * <br>  
	 * 创建人：邓强   <br>
	 * 创建时间：2017年10月30日 下午4:51:16    <br> 
	 * 修改人：  <br>
	 * 修改时间：2017年10月30日 下午4:51:16   <br>  
	 * 修改备注：     <br> 
	 * @param wxConfig
	 * @return
	 */
	public static String delete(WxConfig wxConfig){
		String resStr = WxActuator.execute(wxConfig, new WeixinCallback() {
			@Override
			public String callback(WxConfig wxConfig) {
				return WxMenuRequest.delete(wxConfig);
			}
		});

		return resStr;
	}
}
